package com.dwy2002.room.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.rooms.UnavailableDateDTO;
import com.dwy2002.pojo.po.rooms.UnavailableDates;
import com.dwy2002.pojo.vo.UnavailableDatesVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/02/12
 */
public interface IUnavailableDateService extends IService<UnavailableDates> {
    /**
     * 检查包间是否可用
     *
     * @param id    包间ID
     * @param dates 预约日期集合
     * @author 杜伟毅
     * @since 2025/2/12 0012 19:08
     */
    boolean isRoomAvailable(String id, List<LocalDateTime> dates);

    /**
     * 删除预约时间
     *
     * @param id   包间id
     * @param date 预约的日期
     * @return true:删除成功，false：删除失败
     * @author 杜伟毅
     * @since 2025/2/14 0014 21:51
     */
    boolean removeUnavailableDate(String id, LocalDateTime date);

    /**
     * 删除预约时间(根据日期id)
     *
     * @param id 日期id
     * @author 杜伟毅
     * @since 2025/5/8 0008 13:01
     */
    Result<Void> removeUnavailableDate(String id);

    /**
     * 获取包间的不可被预约的日期
     *
     * @param id 包间id
     * @author 杜伟毅
     * @since 2025/5/5 0005 13:46
     */
    List<UnavailableDatesVO> getUnavailableDate(String id);

    /**
     * 设置不可预约的时间
     *
     * @param dto 接收前端的不可预约日期
     * @author 杜伟毅
     * @since 2025/5/7 0007 23:47
     */
    Result<Void> saveUnavailableDate(UnavailableDateDTO dto);
}
